环境介绍

  • 家里用 Docker 部署了个 GitLab + Drone CI
  • 腾讯云轻量云,装了Docker + Docker-compose

腾讯云服务器资源较小,主要就承担下内网穿透与博客架设的责任,所以就有现在的条件梳理了一个服务器编排方案。

部署的事其实也简单,但有效的管理便于遇到便宜的服务器,可以更好的迁移,与可以更好的玩一些自建服务。

编排方案

通过 git 项目管理 docker-compose 脚本,并在项目中配置 drone 持续化部署

Untitled.png

GitLab 自带的 Web IDE 甚至让我可以直接打开网页开始编排服务后,通过 Drone CI 后就直接完成部署及调整。

# .drone.yml 文件
kind: pipeline
type: docker
name: service-compose

trigger:
  event:
  - custom

steps:
  - name: check
    image: alpine
    commands:
      - if [ -z $service ]; then drone build stop 1; fi
	
	# 将 `service` 文件夹的编排文件上传至服务器
  - name: scp
    depends_on: [ "check" ]
    when:
      status:
        - success
    image: appleboy/drone-scp
    settings:
      host:
        from_secret: SERVER_HOST
      port:
        from_secret: SERVER_PORT
      user: 
        from_secret: SERVER_USER
      key:
        from_secret: SERVER_KEY
      overwrite: true
      strip_components: 1
      source: "./${service}"
      target: "/app/docker-compose"
	
	# 执行对应 service 服务
  - name: compose
    depends_on: [ "scp" ]
    image: appleboy/drone-ssh
    when:
      status:
        - success
    settings:
      host:
        from_secret: SERVER_HOST
      port:
        from_secret: SERVER_PORT
      username:
        from_secret: SERVER_USER
      key:
        from_secret: SERVER_KEY
      script:
        - cd "/app/docker-compose/${service}"
        - chmod -R 777 "/app/docker-compose/${service}"
        - sudo docker-compose down
        - if [ -z $down ]; then echo "stop service ${service}"; drone build stop 1; fi
        - sudo docker-compose pull;
        - sudo docker-compose up -d;

手动触发流程,配置对应的 service 文件夹 Parameters 后。点击Create就开始执行部署啦。

Untitled 1.png